home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / COMPILER / SATHER / !Sather / Library / Base / config / int < prev   
Encoding:
Text File  |  1996-08-03  |  3.1 KB  |  95 lines

  1. #ifndef INT_CONFIG
  2. #define INT_CONFIG
  3.  
  4. #ifdef PP
  5. #undef PP
  6. #endif
  7.  
  8. #ifdef APP
  9. #undef APP
  10. #endif
  11.  
  12. #ifdef FPP
  13. #undef FPP
  14. #endif
  15.  
  16. #ifdef VSTD
  17. #undef VSTD
  18. #endif
  19.  
  20. #define PP    no_pre,no_post
  21. #define APP    arith,PP
  22. #define FPP    fragile,PP
  23. #define VSTD    var "@r $$;"
  24.  
  25. INT_PLUS:    APP,VSTD,exec "$$=INTPLUS($0,$1);" "$$";
  26. INT_MINUS:    APP,VSTD,exec "$$=INTMINUS($0,$1);" "$$";
  27. INT_NEGATE:    APP,VSTD,exec "$$=INTMINUS(0,$0);" "$$";
  28. INT_TIMES:    APP,VSTD,exec "$$=INTTIMES($0,$1);" "$$";
  29. INT_DIV:    FPP,VSTD,exec "$$=INTDIV($0,$1);" "$$";
  30. INT_MOD:    FPP,VSTD,exec "$$=INTMOD($0,$1);" "$$";
  31. INT_IS_EQ:    PP,VSTD,exec "$$=($0)==($1);" "$$";
  32. INT_IS_LT:    PP,VSTD,exec "$$=($0)<($1);" "$$";
  33. INT_BOOL:    PP,VSTD,exec "$$=(BOOL)$0;" "$$";
  34. INT_FLT:    PP,VSTD,exec "$$=(FLT)$0;" "$$";
  35. INT_FLTD:    PP,VSTD,exec "$$=(FLTD)$0;" "$$";
  36. INT_FLTX:    PP,VSTD,exec "$$=(FLT)$0;" "$$";
  37. INT_FLTDX:    PP,VSTD,exec "$$=(FLT)$0;" "$$";
  38. INT_CHAR:    PP,VSTD,exec "$$=(CHAR)$0;" "$$";
  39. INT_C_UNSIGNED_INT:    PP,VSTD,exec "$$=(unsigned int)$0;" "$$";
  40. INT_INT:    PP,exec "$0";
  41. INT_ABS:    PP,VSTD,exec "$$=($0<0)?-$0:$0;" "$$";
  42. INT_SQUARE:    APP,VSTD,exec "$$=INTTIMES($0,$0);" "$$";
  43. INT_MAX:    PP,VSTD,exec "$$=($0>$1)?$0:$1;" "$$";
  44. INT_MIN:    PP,VSTD,exec "$$=($0<$1)?$0:$1;" "$$";
  45. INT_IS_EVEN:    PP,VSTD,exec "$$=($0&1)==0;" "$$";
  46. INT_IS_ODD:    PP,VSTD,exec "$$=($0&1)!=0;" "$$";
  47. INT_IS_BETWEEN:    PP,VSTD,exec "$$=($1<=$0&&$0<=$2)||($2<=$0&&$0<=$1);" "$$";
  48. INT_UPLUS:    APP,VSTD,exec "$$=INTUPLUS($0,$1);" "$$";
  49. INT_UMINUS:    APP,VSTD,exec "$$=INTUMINUS($0,$1);" "$$";
  50. INT_UTIMES:    APP,VSTD,exec "$$=INTUTIMES($0,$1);" "$$";
  51. INT_UDIV:    FPP,VSTD,exec "$$=INTUDIV($0,$1);" "$$";
  52. INT_UMOD:    FPP,VSTD,exec "$$=INTUMOD($0,$1);" "$$";
  53. INT_MPLUS:    PP,VSTD,exec "$$=((unsigned)$0+(unsigned)$1);" "$$";
  54. INT_MMINUS:    PP,VSTD,exec "$$=((unsigned)$0-(unsigned)$1);" "$$";
  55. INT_MNEGATE:    PP,VSTD,exec "$$=(-(unsigned)$0);" "$$";
  56. INT_MTIMES:    PP,VSTD,exec "$$=((unsigned)$0*(unsigned)$1);" "$$";
  57. INT_MDIV:    FPP,VSTD,exec "$$=((unsigned)$0/(unsigned)$1);" "$$";
  58. INT_MMOD:    FPP,VSTD,exec "$$=((unsigned)$0%%(unsigned)$1);" "$$";
  59. INT_BNOT:    PP,VSTD,exec "$$=~$0;" "$$";
  60. INT_BAND:    PP,VSTD,exec "$$=$0&$1;" "$$";
  61. INT_BOR:    PP,VSTD,exec "$$=$0|$1;" "$$";
  62. INT_BXOR:    PP,VSTD,exec "$$=$0\\^$1;" "$$";
  63. INT_LSHIFT:    PP,VSTD,exec "$$=((unsigned)$0)<<((unsigned)$1);" "$$";
  64. INT_RSHIFT:    PP,VSTD,exec "$$=INTRSHIFT($0,$1);" "$$";
  65. INT_URSHIFT:    PP,VSTD,exec "$$=((unsigned)$0)>>((unsigned)$1);" "$$";
  66. INT_CREATE_STR:    FPP,VSTD,exec "$$=atoi(((STR)$1)->arr_part);" "$$";
  67. INT_AGET:    PP,VSTD,exec "$$=((CHAR)(($0&(1<<$1))!=0));" "$$";
  68. INT_ASET:    PP,VSTD,exec "$$=((($0)&(~(1<<($1))))|(($2)<<($1)));" "$$";
  69. INT_MAXINT:    PP,var "INT $$=SINT_MAX;",exec "$$";
  70. INT_MININT:    PP,var "INT $$=SINT_MIN;",exec "$$";
  71. INT_TIMESB:    PP,
  72.         break "$0";
  73. INT_TIMESB_INT:    PP,
  74.         break "$0",
  75.         temp "@r a$$;",
  76.         iter "a$$=$#;" "a$$";
  77. INT_FORB:    PP,
  78.         var "INT $$,$$m;",
  79.         init "$$=$0-1;$$m=$1;",
  80.         iter "if(($1--)<=0) @@;$$++;" "$$";
  81. INT_UPB:    PP,
  82.         var "INT $$;",
  83.         init "$$=$0-1;",
  84.         iter "$$++;" "$$";
  85. INT_UPTOB:    PP,
  86.         var "INT $$,$$m;",
  87.         init "$$=$0-1;$$m=$1;",
  88.         iter "if($$++>=$$m) @@;" "$$";
  89. INT_DOWNTOB:    PP,
  90.         var "INT $$,$$m;",
  91.         init "$$=$0+1;$$m=$1;",
  92.         iter "if($$--<=$$m) @@;" "$$";
  93.     
  94. #endif 
  95.